import java.io.*;

class FileDemo2 {

	public static void main(String[] args) throws Exception {
		test6();
	}

	public static void test6(){
		File destFile = new File("图片1.jpg");
		if (destFile.exists()) {
			try {
				// 字节输入流
				FileInputStream fis = new FileInputStream(destFile);
				// 字节输出流
				FileOutputStream fos = new FileOutputStream("图片3.jpg", true);
				
				byte[] buf = new byte[1024];
				int length = fis.read(buf);
				// -1就是文件结束的标志
				while(length != -1) {
					// 将标准输出改成文件输出就是文件复制
					// fos.write(buf); // 会产生脏数据（不足1024字节的部分）
					fos.write(buf, 0 , length);
					length = fis.read(buf);
				}
				// 用完文件就正确关闭
				fos.close();
				fis.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		} else {
			System.out.println("文件不存在");
		}
	}

	public static void test5(){
		File destFile = new File("readme.txt");
		if (destFile.exists()) {
			try {
				// 字符输入流
				FileReader rd = new FileReader(destFile);
				FileWriter fw = new FileWriter("readme2.txt", true);
				// 处理流通常提供更友好的接口给使用人员
				BufferedReader br = new BufferedReader(rd);
				// String line = br.readLine();
				// System.out.println(line);
				// 读取整个文件的内容
				String line = br.readLine();
				while(line != null) {
					// 标准输出
					// System.out.println(line);
					// 将标准输出改成文件输出就是文件复制
					fw.write(line);
					line = br.readLine();
				}
				// 用完文件就正确关闭
				fw.close();
				br.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		} else {
			System.out.println("文件不存在");
		}
	}

	public static void test4() throws Exception {
		// 创建节点流对象
		// 覆盖式写入
		// FileWriter fw = new FileWriter("readme.txt");
		// 追加式写入
		FileWriter fw = new FileWriter("readme.txt", true);
		fw.write("测试写入文件");
		fw.write("测试写入文件");
		fw.write("测试写入文件");
		fw.close();
	}


	// 演示文本文件的读写
	public static void test3() {
		File destFile = new File("readme.txt");
		if (destFile.exists()) {
			try {
				// 字符输入流
				FileReader rd = new FileReader(destFile);
				// 一次读一个字符。性能差。
				// int ch = rd.read();
				// System.out.println((char)ch);
				// 一次读一组字符
				char[] buf = new char[1024];
				int length = rd.read(buf);
				System.out.println(length);
				System.out.println(new String(buf,0, length));
				// 处理流通常提供更友好的接口给使用人员
				BufferedReader br = new BufferedReader(rd);
				// String line = br.readLine();
				// System.out.println(line);
				// 读取整个文件的内容
				String line = br.readLine();
				while(line != null) {
					System.out.println(line);
					line = br.readLine();
				}
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		} else {
			System.out.println("文件不存在");
		}
	}

	// 演示重命名
	public static void test2() {
		File file = new File("readme2.txt");
		File destFile = new File("readme.txt");
		if (!destFile.exists()) {
			file.renameTo(destFile);
		} else {
			System.out.println("文件名已存在！");
		}

	}

	// 演示文件的遍历
	public static void test1() {
		File dir = new File("E:\\2020-2021-2\\workspace\\week13");
		if (dir.exists() && dir.isDirectory()) {
			File[] files = dir.listFiles();
			for (File file : files) {
				System.out.println(file.getName());
			}
		}

	}
}